home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / speak / src / speak.bas < prev   
BASIC Source File  |  1993-07-08  |  3KB  |  75 lines

  1. 1000 '==============================================================
  2. 1010 '  簡易ボイスシンセサイザ おしゃべり小僧
  3. 1020 '==============================================================
  4. 1030 DEFINT A-Z
  5. 1040 DIM FACE(20000),KOE(1008),KAZU$(10),ALPHA$(26)
  6. 1050 SCREEN @0:CONSOLE 2,22,2
  7. 1060 GOSUB *顔を描く:GOSUB *英数字
  8. 1070 PUT@A(400,0)-(599,199),FACE
  9. 1080 LOCATE 0,0:PRINT "*** おしゃべり小僧 ***":LOCATE 0,2
  10. 1090 '
  11. 2000 '--------------------------------------------------------------
  12. 2010 '  メインルーチン
  13. 2020 '--------------------------------------------------------------
  14. 2030 *MAIN
  15. 2040  LINE INPUT"入力:",SPK$
  16. 2050  IF SPK$="" THEN *BYE
  17. 2060  GOSUB *おしゃべり
  18. 2070 GOTO *MAIN
  19. 2080 '
  20. 2090 *BYE
  21. 2100  END
  22. 2110 '
  23. 10000 '--------------------------------------------------------------
  24. 10010 '  ぱくぱく おしゃべりサブルーチン
  25. 10020 '--------------------------------------------------------------
  26. 10030 *おしゃべり
  27. 10040  SPK0$=AKCNV$(SPK$)
  28. 10050  CNT=KLEN(SPK0$):I=1
  29. 10060  WHILE I<=CNT
  30. 10070   M$=KMID$(SPK0$,I,1)
  31. 10080   IF M$>="ァ" AND M$<="ヴ" THEN MID$(SPK0$,I*2-1,2)=KNJ$(JIS(M$)-&H100)
  32. 10090   IF M$>="0" AND M$<="9" THEN SPK0$=KLEFT$(SPK0$,I-1)+KAZU$(VAL(KACNV$(M$)))+KRIGHT$(SPK0$,KLEN(SPK0$)-I)
  33. 10100   IF M$>="a" AND M$<="z" THEN M$=KNJ$(JIS(M$)-&H20)
  34. 10110   IF M$>="A" AND M$<="Z" THEN SPK0$=KLEFT$(SPK0$,I-1)+ALPHA$(JIS(M$)-JIS("A"))+KRIGHT$(SPK0$,KLEN(SPK0$)-I)
  35. 10120   CNT=KLEN(SPK0$):I=I+1
  36. 10130  WEND
  37. 10140 '
  38. 10150  FOR I=1 TO KLEN(SPK0$)
  39. 10160   M$=KMID$(SPK0$,I,1)
  40. 10170   LOAD@ M$+".snd",KOE%
  41. 10180   PUT@A(400,0)-(599,199),FACE,,,,,10000
  42. 10190   PCMPLAY KOE%,127:WAIT 5 'ハードディスクで動かすときにはwait 20
  43. 10200   PUT@A(400,0)-(599,199),FACE
  44. 10210  NEXT
  45. 10220 RETURN
  46. 10230 '
  47. 10240 '--------------------------------------------------------------
  48. 10250 '  準備
  49. 10260 '--------------------------------------------------------------
  50. 10270 *顔を描く
  51. 10280  GOSUB *FACE1:GET@A(0,0)-(199,199),FACE
  52. 10290  GOSUB *FACE2:GET@A(0,0)-(199,199),FACE,10000
  53. 10300  CLS
  54. 10310 RETURN
  55. 10320  *FACE1
  56. 10330   LINE(0,0)-(199,199),PSET,7,BF
  57. 10340   DEF PEN 0,8:CIRCLE(100,100),90,0,,,,F,,6:CIRCLE(100,130),20,0,,.125!,.375!
  58. 10350   DEF PEN 0,16:PSET(135,80),0:PSET(65,80),0
  59. 10360  RETURN
  60. 10370  *FACE2
  61. 10380   LINE(0,0)-(199,199),PSET,7,BF
  62. 10390   DEF PEN 0,8:CIRCLE(100,100),90,0,,,,F,,6:CIRCLE(100,140),20,0,.5!,,,F,,7
  63. 10400   DEF PEN 0,16:PSET(135,80),0:PSET(65,80),0
  64. 10410  RETURN
  65. 10420 '
  66. 10430 *英数字
  67. 10440  RESTORE 10480
  68. 10450  FOR I=0 TO  9:READ KAZU$(I):NEXT
  69. 10460  FOR I=0 TO 25:READ ALPHA$(I):NEXT
  70. 10470 RETURN
  71. 10480  DATA ぜろ,いち,に,さん,し,ご,ろく,しち,はち,きゅう
  72. 10490  DATA えい,びい,しい,でえ,いい,えふ,じい,えいち,あい,じえい,けい,える
  73. 10500  DATA えむ,えぬ,おお,ぴい,きゆう,あある,えす,てい,ゆう,い,だぶりゆ
  74. 10510  DATA えくす,わい,ずい
  75.